#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "CppObject.h"

#include <QDebug>

int main(int argc, char *argv[])
{
    // Qt::AA_EnableHighDpiScaling属性用于启用高DPI（高分辨率显示）缩放支持。
    // 在应用程序窗口显示在高DPI屏幕上时，启用此属性将确保应用程序窗口能够正确缩放和渲染以适应高分辨率屏幕的显示。
    // 这意味着应用程序将具有更好的外观和可用性，特别是在高分辨率显示器上使用时。

    /* 在嵌入式设备上使用`QApplication::setAttribute(Qt::AA_EnableHighDpiScaling)`可能不太合适，具体取决于嵌入式设备的屏幕分辨率和硬件性能。
        嵌入式设备通常具有较小的屏幕尺寸和较低的分辨率，因此启用高DPI缩放可能会导致应用程序界面过于缩小，导致用户体验不佳。
        另外，一些嵌入式设备的硬件性能可能有限，无法有效地处理高DPI缩放所带来的额外渲染负担，导致性能下降和能耗增加。
        因此，在嵌入式设备上，需要仔细评估设备的屏幕分辨率、性能和用户体验需求，权衡是否启用高DPI缩放。
        如果设备具有高分辨率屏幕，较高的性能和用户体验需求，则可以考虑启用高DPI缩放，否则可能需要禁用该选项。*/
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv); // 创建用户界面APP

    //qmlRegisterType注册C++类型至QML
    //arg1:import时模块名
    //arg2:主版本号
    //arg3:次版本号
    //arg4:QML类型名
    qmlRegisterType<CppObject>("MyCppObject",1,0,"CppObject");

    // QQmlApplicationEngine是Qt框架中用于加载QML文件的应用程序引擎。
    // 它通常用于Qt Quick应用程序中，用于加载和管理QML文件并且启动应用程序的执行。
    QQmlApplicationEngine engine;

    //也可以注册为qml全局对象
    //engine.rootContext()->setContextProperty("cppObj",new CppObject(qApp));

    qDebug()<<"开始加载界面";
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}
